namespace SDKLibrary
{
    /// <summary>
    /// 设备类,代表具体设备
    /// </summary>
    public class Device
    {

        /// <summary>
        /// 当前文件上传列表
        /// </summary>
        public List<UploadFileInfo> UploadItems { get; private set; }

        /// <summary>
        /// 获取设备信息
        /// </summary>
        /// <returns></returns>
        public DeviceInfo GetDeviceInfo();

        /// <summary>
        /// 从xml发送数据
        /// </summary>
        /// <param name="xml">xml 数据</param>
        /// <param name="useCurrentSdkGuid">是否使用当前Sdk GUID 默认为 true,因为每次建立连接Sdk GUID都不一样,
        /// 所以需要使用当前 SdkGUID替换 文档里面的sdkGUID </param>
        public void SendFromXml(string xml, bool useCurrentSdkGuid = true); 

        /// <summary>
        /// 添加上传文件
        /// </summary>
        /// <param name="filePath">文件路径</param>
        /// <param name="type">文件类型</param>
        /// <returns>返回保存上传文件信息的对象</returns>
        public UploadFileInfo AddUploadFile(string filePath, HFileType type = HFileType.kauto);

        /// <summary>
        /// 添加上传文件
        /// </summary>
        /// <param name="filePath">文件路径</param>
        /// <param name="tempFile">是否是临时文件</param>
        /// <param name="type">文件类型</param>
        /// <returns>返回保存上传文件信息的对象</returns>
        public UploadFileInfo AddUploadFile(string filePath, bool tempFile = false, HFileType type = HFileType.kauto);

        /// <summary>
        /// 开始上传文件
        /// </summary>
        /// <param name="fileinfo"></param>
        public void StartUploadFile();

        /// <summary>
        /// 获取以太网网络地址信息
        /// </summary>
        public void GetEthernetInfo();

        /// <summary>
        /// 设置以太网网络地址信息
        /// </summary>
        public void SetEthernetInfo(EthernetInfo info);

        /// <summary>
        /// 获取Wifi信息
        /// </summary>
        public void GetWifiInfo();

        /// <summary>
        /// 设置Wifi信息
        /// </summary>
        public void SetWifiInfo(WifiInfo info);

        /// <summary>
        /// 获取亮度信息
        /// </summary>
        public void GetLuminanceInfo();

        /// <summary>
        /// 设置亮度信息
        /// </summary>
        /// <param name="luminanceInfo">要设置的亮度信息数据类</param>
        public void SetLuminanceInfo(LuminanceInfo luminanceInfo);

        /// <summary>
        /// 获取时间信息
        /// </summary>
        public  void GetTimeInfo();

        /// <summary>
        /// 设置时间信息
        /// </summary>
        /// <param name="timeInfo"></param>
        public void SetTimeInfo(TimeInfo timeInfo);

        /// <summary>
        /// 开屏
        /// </summary>
        public void OpenScreen();

       /// <summary>
       /// 关屏
       /// </summary>
        public void CloseScreen();

        /// <summary>
        /// 获取开关机信息
        /// </summary>
        public void GetSwitchTimeInfo();

        /// <summary>
        /// 设置开关机信息
        /// </summary>
        /// <param name="switchTimeInfo"></param>
        public void SetSwitchTimeInfo(SwitchTimeInfo switchTimeInfo);

        /// <summary>
        /// 获取开机画面信息
        /// </summary>
        public void GetBootLogoInfo();

        /// <summary>
        /// 设置开机画面信息
        /// </summary>
        /// <param name="bootLogo"></param>
        public void SetBootLogoInfo(BootLogoInfo bootLogo);

        /// <summary>
        /// 发送屏幕 (重新刷新所有节目)
        /// </summary>
        /// <param name="screen"></param>
        /// <returns></returns>
        public string SendScreen(HdScreen screen);

        /// <summary>
        /// 更新指定节目
        /// </summary>
        /// <param name="program"></param>
        /// <returns></returns>
        public string UpdateDeviceProgram(HdProgram program);

        /// <summary>
        /// 删除制定节目
        /// </summary>
        /// <param name="program"></param>
        /// <returns></returns>
        public string DeleteDeviceProgram(HdProgram program);

        /// <summary>
        /// 获取字体信息
        /// </summary>
        public  void GetDeviceFontInfo();

        /// <summary>
        /// 获取服务器信息
        /// </summary>
        public void GetTcpServerInfo();

        /// <summary>
        /// 设置服务器信息
        /// </summary>
        /// <param name="info"></param>
        public void SetTcpServerInfo(ServerInfo info);

        /// <summary>
        /// 删除已上传到设备的文件
        /// </summary>
        /// <param name="fileNames">文件列表</param>
        public void DeleteFile(List<string> fileNames);

        /// <summary>
        /// 删除一个已上传到设备的文件
        /// </summary>
        /// <param name="fileName">文件名</param>
        public void DeleteFile(string fileName);

        /// <summary>
        /// 回读已经上传到设备的文件列表
        /// </summary>
        public void ReadbackFileList();

       /// <summary>
        /// 关闭当前设备连接
        /// </summary>
        public void Close();

        /// <summary>
        /// 根据文件路径后缀获取文件类型
        /// </summary>
        /// <param name="filePath">文件路径</param>
        /// <returns></returns>
        static public HFileType GetHFileType(string filePath);

      ///...................................

   }

}